//
//  HLRefreshControl.swift
//  HLwWeibo
//
//  Created by hqhxu on 16/3/5.
//  Copyright © 2016年 hqhxu. All rights reserved.
//

import UIKit

class HLRefreshControl: UIRefreshControl {
    
    /// 定义一个临界点  一般设置为refreshControl的高度
    private let refreshControlOffset:CGFloat = -60
    
    // 需要设置一个默认值
    private var isUp:Bool = false
    
    // 在这UIRefreshControl类中如果要重写父类的这个属性  查看系统到底在底部做了些什么事  必须得写上didSet这个方法
    override var frame:CGRect {
        didSet {
            // 可以利用系统的这个frame这个值来改变箭头的状态
            let offsetY = frame.origin.y
            if offsetY > 0 {
                return
            }
            
            if offsetY <= refreshControlOffset && isUp == false {
                
                isUp = true
                refreshView.tipIconAnimation(isUp)
            }else if offsetY > refreshControlOffset && isUp == true  {
                
                isUp = false
                refreshView.tipIconAnimation(isUp)
            }
            // 这个方法系统会调用很多次  可以在这里判断系统是否正在刷新
            if refreshing { // 如果正在刷新那么我们就可以调用自己的动画实现刷新
                
                refreshView.loadViewStartRotation()
            }
        }
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override init() {
        super.init()
        
        prepareUI()
    }
    
    /// 重写系统的停止刷新方法   停止动画
    override func endRefreshing() {
        
        super.endRefreshing()
        refreshView.stopRotationLoad()
        
    }


    private func prepareUI() {
        addSubview(refreshView)
        
        refreshView.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(self)
            make.centerY.equalTo(self)
            make.size.equalTo(refreshView.frame.size)
        }
        
        print("refreshFrame:\(refreshView.frame)")
    }
    
    /// 懒加载下拉属性控件
    lazy var refreshView:HLRefreshView = HLRefreshView.refreshView()
}
